一般查询 Find
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| var fb = Builders<QcdOrder>.Filter; var filter = fb.Eq(m => m.IsDelete, false);
filter &= fb.Gt(o => o.CreatedOn, start); filter &= fb.Lt(o => o.CreatedOn, end);
filter &= fb.Regex(m => m.SendShortName, new BsonRegularExpression(new Regex(keyword, RegexOptions.IgnoreCase))) | fb.Regex(m => m.SendFullName, new BsonRegularExpression(new Regex(keyword, RegexOptions.IgnoreCase))) | fb.Regex(m => m.ReceiveShortName, new BsonRegularExpression(new Regex(keyword, RegexOptions.IgnoreCase))) | fb.Regex(m => m.ReceiveFullName, new BsonRegularExpression(new Regex(keyword, RegexOptions.IgnoreCase)));
int count = (int)mongoOrder.Find(filter).Count();
var sb = Builders<QcdOrder>.Sort; var sort = sb.Descending(m => m.AutoId);
if (page > pageCount) { page = pageCount;
} var skip = (page - 1) * pageSize; var taking = pageSize;
if (page == pageCount) taking = count - skip;
var list = mongoOrder.Find(filter).Sort(sort).Skip(skip).Limit(taking).ToList();
|
注意:
- 使用
Builders<QcdOrder>
对象的静态属性来获得一系列的Builder
,例如:Filter,Project 等;
- 使用
Builders<QcdOrder>.Filter
来初始化Filter
;
- 使用重载操作符
&
和|
进行And
和Or
操作;
聚合 Aggregation
查询语句示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| db.getCollection('QcdOrder').aggregate([ { $match : { IsDelete : false, CreatedOn : { $gt : new Date("2017-01-01"), $lt : new Date("2017-03-22"), }, } }, { $group : { _id : null , Count : {$sum : 1}, sumTotalAccount100: {$sum : '$TotalAccount100'}, sumFee100 : {$sum : '$Fee100'}, sumServicesGoods : {$sum : '$ServicesGoodsTotalQuantity'}, sumMemberPayFee : {$sum : '$MemberPayFee100'}, } } ])
|
c#代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var group = BsonDocument.Parse(@" { _id : 'null', sumTotalAccount100: {$sum : '$TotalAccount100'}, sumFee100 : {$sum : '$Fee100'}, sumServicesGoods : {$sum : '$ServicesGoodsTotalQuantity'}, sumMemberPayFee : {$sum : '$MemberPayFee100'} }");
var ag = mongoOrder.Aggregate() .Match(filter) .Group(group) .ToList();
|
注意:聚合操作不需要分组时,C#无法通过表达式来设定id
为null
,只能通过BsonDocument.Parse()
方法来转换一个group
节。